|
Technical Q&AOPS 23 - タイムリーな問題 - 1904(1999 年 5 月 17 日)
Q: グローバル変数の Time には、1904 年 1 月 1 日の午前 0 時からの秒数が含まれていますが、なぜ 1904 という年が選択されたのですか。 A: 時間をさかのぼる能力は1 つの検討の結果です。たとえば、クロックの計測は 1984 年から始めてもかまいませんし、もっと後からでもかまいません。いずれにせよ、クロックの計測を開始する日付は、現在の日付がクロックの範囲の中に収まるように設定する必要があります。 それでは、クロックの範囲とは何なのでしょうか。クロックチップは 1 秒ごとに増加する 4 バイトのカウンタを持っているため、4,294,967,295 秒、つまり約 136 年の時間をカウントできます。このため、Macintosh のクロックは 1904 + 136 = 2040 年まで動作し続けるはずです。カウンタの最大値である $FFFFFFFF は、2040 年 2 月 6 日午前 6 時 28 分 15 秒に相当します。 年/閏年/平年 (4 年ごとに閏年になりますが、世紀の最後の年は閏年になりません。ただし、4 世紀ごとの最後の年は例外で、この年は閏年になります) の範囲と、クロックが満期になる日付 (2040 年) を与えると、Macintosh が認識可能な日付は「4 年ごとに閏年となる」という規則に違反することがないため、Macintosh の「閏年コード」はこの規則だけを処理すればいいことになります。なお、2000 年は 400 で割り切れるため、この年は閏年になります。また、1900 年は平年です。1900 年を起点にすると、「平年となる」閏年を説明する別のアルゴリズムを使用しなければならなくなります。このため、他のシステムのクロックには 1901 年を起点にするものがあります。 時間のカウントがなぜ 1904 年 1 月 1 日の午前 0 時から始まるのかといえば、それはおそらく 1904 年が「平年となる」閏年 (1900 年) 以降の最初の閏年となるなるためだと考えられます。このようにして、メカニカル (秒数に関する 4 バイトの制限) およびプラグマティック (日付を勘定するために 1 つのアルゴリズムだけを使用するなど) な配慮から 1904 年という年が選択されました。 それでは、未来に戻りましょうか ...
参考文献
-- Mark Cookson Worldwide Developer Technical Support Technical Q&As | Contents Previous Question | Next Question To contact us, please use the Contact Us page. |